Commonly-assigned, co-pending application Ser. No. 09/316,182, filed May 21, 1999, entitled COMMON SCALABLE QUEUING AND DEQUEUING ARCHITECTURE AND METHOD RELATIVE TO NETWORK SWITCH DATA RATE.
The present invention relates to networks and more particularly, to a system and method of controlling network traffic data in a switched network operating according to Ethernet (IEEE 802.3) protocol.
Switched local area networks use a network switch for supplying data frames between network stations or other network nodes, where each network node is connected to the network switch by a media. The switched local area network architecture uses a media access control (MAC) enabling network interfaces within each network node and the network switch to access the media. A network switch stores and forwards data frames received from transmitter nodes to destination nodes based on header information and the data in the received frames, including source and destination addresses. The network switch temporarily stores the data frames as they are passed through the switch in an external memory, such as an SSRAM.
In particular, a multi-port network switch stores and fetches data frames stored in its external memory via read and write buses within the switch connected to each port through a port interface, an external bus, and an external bus interface connecting the read and write busses to the external bus. Each memory storage (i.e., buffer) location within the external memory has a predetermined capacity, such as 256 bytes, for example. If a received data frame exceeds this capacity, the frame must be divided, segmented and stored in two or more buffers within the external memory. In such cases, the data frame is typically stored by a queuing logic operating according to a predetermined queuing operation that sequences (i.e., queues) the individual data frame segments.
When the network switch subsequently transmits the stored data frame at a network switch port, the data frame must be retrieved from the one or more buffers in the external memory. However, in the case where multiple buffers have been used to store the data frame, the data must be retrieved in the same sequence it was stored in order to properly reconstruct the data frame. Hence, the logic required to both sequence and store the data frame segments as well as the complementary logic to retrieve and reconstruct the data frame segments can be complex and costly, especially since all of the individual buffer locations in which the frame segments are stored must be recorded as well as the sequence of those locations.
There is a need for a queuing method and accompanying logic to sequence data segments without requiring separate storage of the individual storage locations as well as the sequence of those locations. The elimination of separate storage serves to reduce the cost and overall complexity of the network switch. There is also a need for a method and apparatus for queuing data frames to be stored in an external memory that links each address location by storing address information the header of each buffer, rather than in a separate memory.
According to one aspect of the present invention, a method of storing received data in a memory of a network switch includes a step of retrieving first and second memory address pointers from a plurality of available memory address pointers specifying respective storage locations in a memory. Each of the storage locations has a prescribed storage size. The method also includes a steps of receiving at least a portion of a data frame from a network media and writing at least a first portion of the received data frame into a first storage location specified by the first memory address pointer. Additionally, if the entire data frame has a size that exceeds the prescribed storage size of the specified memory location, a second portion of the received data frame is written into a second storage location specified by the second memory address pointer and header information identifying the second memory address pointer is written into the first storage location specified by the first memory address pointer.
According to another aspect of the present invention, a network switch apparatus includes at least one network switch port configured for receiving data frames from network nodes. In addition, a queuing block is included within the at least one network switch port for addressing, transmitting and storing received data frames in an external memory. The queuing block is configured to segment and store each data frame in one or more memory locations within the external memory and write header information into each memory location. Included in the header information is a memory location pointer for pointing to a subsequent memory location when two or more memory locations are required to store a single data frame.
The use of memory locations containing information that points (or xe2x80x9clinksxe2x80x9d) to subsequent memory locations by storing pointers within the headers of each memory location in the external memory obviates the need for a separate memory to store and sequence the memory locations. Hence, the present invention is less complex and costly by eliminating the need for a separate memory.
Additional advantages and novel features of the invention will be set forth in part in the description which follows, and in part will become apparent to those skilled in the art upon examination of the following or may be learned by practice of the invention. The advantages of the invention may be realized and attained by means of the instrumentalities and combinations particularly pointed out in the appended claims.